package com.aspose.cells;

import java.util.HashMap;
import java.util.Iterator;

public class RowCollection implements Iterable {
   zafu a;
   zahs b;
   zr c;
   zq d;
   Cells e;

   RowCollection(Cells cells, zr rowsData) {
      this.e = cells;
      this.a(rowsData);
      this.a();
      this.b();
   }

   void a(zr var1) {
      this.c = var1;
      if (this.e.getMultiThreadReading()) {
         this.d = new zsd(this.e, this);
      } else if (var1.c()) {
         this.d = new zbub(10, this.e, this);
      } else {
         this.d = new zbms(this.e, this);
      }

   }

   void a(int var1) {
      if (this.c.a() > 0) {
         this.a = this.c.a(this.e, this, var1);
      }

   }

   void b(int var1) {
      this.a(var1, false);
   }

   void a(int var1, boolean var2) {
      int var3 = this.c.a();
      if (var3 < 1) {
         if (var2 && this.b instanceof zbba) {
            ((zbba)this.b).a(true);
         }

      } else {
         Object var4 = null;
         Object var5 = null;
         int var6 = this.e.t() ? 0 : this.e.p();
         zahl var7 = this.c.a(-1, -1, true);
         int var8 = (var3 >> 1) + 1;
         int[] var18 = new int[var8];
         int[] var19 = new int[var18.length];
         --var8;

         int var9;
         int var10;
         while(var8 > -1) {
            var9 = var7.a();
            if (var9 < 0) {
               break;
            }

            --var3;
            var10 = Row.b(this.c, var9);
            if (var10 != var6) {
               var18[var8] = this.c.a(var9);
               var19[var8] = var10;
               --var8;
            }
         }

         int[] var11;
         int var13;
         int[] var14;
         double var22;
         if (var3 > 0) {
            if (var18[var18.length - 1] < (var18.length << 1) + var18.length) {
               switch(var1) {
               case 0:
                  var22 = (double)this.e.r().M();
                  double var24 = var22 / 1440.0D;
                  int var25 = (int)((double)var6 * var24);
                  int[] var27 = new int[var18[var18.length - 1] + 1];
                  com.aspose.cells.a.c.zc.a((int[])var27, 0, var27.length, (int)var25);

                  for(var8 = 0; var8 < var18.length; ++var8) {
                     var27[var18[var8]] = (int)((double)var19[var8] * var24);
                  }

                  while(true) {
                     var9 = var7.a();
                     if (var9 < 0) {
                        this.b = new zbbc(new zbbd(var24), new zbbg(var25, var27));
                        return;
                     }

                     var27[this.c.a(var9)] = (int)((double)Row.b(this.c, var9) * var24);
                  }
               case 1:
                  var11 = new int[var18[var18.length - 1] + 1];
                  boolean var20;
                  Object var23;
                  if (var2 && zbbf.f(var6)) {
                     var20 = true;
                     var23 = new zbbf(1.0D);
                     var6 = ((zahu)var23).a(var6);
                  } else {
                     var20 = false;
                     var23 = new zbbe(1.0D);
                  }

                  com.aspose.cells.a.c.zc.a((int[])var11, 0, var11.length, (int)var6);

                  for(var8 = var18.length - 1; var8 > -1; --var8) {
                     if (var2) {
                        if (var20) {
                           var11[var18[var8]] = ((zahu)var23).a(var19[var8]);
                        } else {
                           var10 = var19[var8];
                           if (zbbf.f(var10)) {
                              var20 = true;
                              var23 = new zbbf(1.0D);
                              var6 = ((zahu)var23).a(var6);
                              var3 = var18[var8];
                              com.aspose.cells.a.c.zc.a((int[])var11, 0, var3, (int)var6);
                              var11[var3] = ((zahu)var23).a(var10);
                              ++var3;

                              while(var3 < var11.length) {
                                 var11[var3] = ((zahu)var23).a(var11[var3]);
                                 ++var3;
                              }
                           } else {
                              var11[var18[var8]] = var10;
                           }
                        }
                     } else {
                        var11[var18[var8]] = var19[var8];
                     }
                  }

                  var4 = null;
                  var5 = null;

                  while(true) {
                     while(true) {
                        while(true) {
                           var9 = var7.a();
                           if (var9 < 0) {
                              ((zahu)var23).a((double)this.e.r().M() / 1440.0D);
                              this.b = new zbbc((zahu)var23, new zbbg(var6, var11));
                              return;
                           }

                           if (var2) {
                              if (var20) {
                                 var11[this.c.a(var9)] = ((zahu)var23).a(Row.b(this.c, var9));
                              } else {
                                 var10 = Row.b(this.c, var9);
                                 if (zbbf.f(var10)) {
                                    var20 = true;
                                    var23 = new zbbf(1.0D);
                                    var6 = ((zahu)var23).a(var6);
                                    var3 = this.c.a(var9);
                                    com.aspose.cells.a.c.zc.a((int[])var11, 0, var3, (int)var6);
                                    var11[var3] = ((zahu)var23).a(var10);
                                    ++var3;

                                    while(var3 < var11.length) {
                                       var11[var3] = ((zahu)var23).a(var11[var3]);
                                       ++var3;
                                    }
                                 } else {
                                    var11[this.c.a(var9)] = var10;
                                 }
                              }
                           } else {
                              var11[this.c.a(var9)] = Row.b(this.c, var9);
                           }
                        }
                     }
                  }
               default:
                  var22 = (double)this.e.r().M() / 1440.0D;
                  var13 = (int)((double)var6 * var22);
                  var14 = new int[var18[var18.length - 1] + 1];
                  int[] var26 = new int[var14.length];
                  com.aspose.cells.a.c.zc.a((int[])var26, 0, var26.length, (int)var13);
                  Object var17;
                  boolean var28;
                  if (var2 && zbbf.f(var6)) {
                     var28 = true;
                     var17 = new zbbf(var22);
                     var6 = ((zahu)var17).a(var6);
                  } else {
                     var28 = false;
                     var17 = new zbbe(var22);
                  }

                  com.aspose.cells.a.c.zc.a((int[])var14, 0, var14.length, (int)var6);

                  for(var8 = var18.length - 1; var8 > -1; --var8) {
                     var10 = var19[var8];
                     var3 = var18[var8];
                     var26[var3] = (int)((double)var10 * var22);
                     if (var2) {
                        if (var28) {
                           var14[var3] = ((zahu)var17).a(var10);
                        } else if (zbbf.f(var10)) {
                           var28 = true;
                           var17 = new zbbf(var22);
                           var6 = ((zahu)var17).a(var6);
                           com.aspose.cells.a.c.zc.a((int[])var14, 0, var3, (int)var6);
                           var14[var3] = ((zahu)var17).a(var10);
                           ++var3;

                           while(var3 < var14.length) {
                              var14[var3] = ((zahu)var17).a(var14[var3]);
                              ++var3;
                           }
                        } else {
                           var14[var3] = var10;
                        }
                     } else {
                        var14[var3] = var10;
                     }
                  }

                  while(true) {
                     while(true) {
                        while(true) {
                           var9 = var7.a();
                           if (var9 < 0) {
                              this.b = new zbbb((zahu)var17, new zbbg(var6, var14), new zbbd(var22), new zbbg(var13, var26));
                              return;
                           }

                           var3 = this.c.a(var9);
                           var10 = Row.b(this.c, var9);
                           var26[var3] = (int)((double)var10 * var22);
                           if (var2) {
                              if (var28) {
                                 var14[var3] = ((zahu)var17).a(var10);
                              } else if (zbbf.f(var10)) {
                                 var28 = true;
                                 var17 = new zbbf(var22);
                                 var6 = ((zahu)var17).a(var6);
                                 com.aspose.cells.a.c.zc.a((int[])var14, 0, var3, (int)var6);
                                 var14[var3] = ((zahu)var17).a(var10);
                                 ++var3;

                                 while(var3 < var14.length) {
                                    var14[var3] = ((zahu)var17).a(var14[var3]);
                                    ++var3;
                                 }
                              } else {
                                 var14[var3] = var10;
                              }
                           } else {
                              var14[var3] = var10;
                           }
                        }
                     }
                  }
               }
            }

            while(true) {
               var9 = var7.a();
               if (var9 < 0) {
                  break;
               }

               var10 = Row.b(this.c, var9);
               if (var10 != var6) {
                  if (var8 < 0) {
                     var11 = new int[var18.length + var3];
                     System.arraycopy(var18, 0, var11, var3, var18.length);
                     var18 = var11;
                     var11 = new int[var11.length];
                     System.arraycopy(var19, 0, var11, var3, var19.length);
                     var19 = var11;
                     var8 = var3 - 1;
                  }

                  var18[var8] = this.c.a(var9);
                  var19[var8] = var10;
                  --var8;
               }

               --var3;
            }
         }

         if (var8 > -1) {
            ++var8;
            var11 = new int[var18.length - var8];
            System.arraycopy(var18, var8, var11, 0, var11.length);
            var18 = var11;
            var11 = new int[var11.length];
            System.arraycopy(var19, var8, var11, 0, var11.length);
            var19 = var11;
         }

         switch(var1) {
         case 0:
            var22 = (double)this.e.r().M() / 1440.0D;

            for(var8 = 0; var8 < var19.length; ++var8) {
               var19[var8] = (int)((double)var19[var8] * var22);
            }

            this.b = new zbbc(new zbbd(var22), new zbbh((int)((double)var6 * var22), var18, var19));
            return;
         case 1:
            if (var2) {
               boolean var21 = zbbf.f(var6);
               if (!var21) {
                  for(var3 = 0; var3 < var19.length; ++var3) {
                     if (zbbf.f(var19[var3])) {
                        var21 = true;
                        break;
                     }
                  }
               }

               if (var21) {
                  zbbf var12 = new zbbf((double)this.e.r().M() / 1440.0D);
                  var6 = var12.a(var6);

                  for(var3 = 0; var3 < var19.length; ++var3) {
                     var19[var3] = var12.a(var19[var3]);
                  }

                  this.b = new zbbc(var12, new zbbh(var6, var18, var19));
                  return;
               }
            }

            this.b = new zbbc(new zbbe((double)this.e.r().M() / 1440.0D), new zbbh(var6, var18, var19));
            return;
         default:
            var22 = (double)this.e.r().M() / 1440.0D;
            var13 = (int)((double)var6 * var22);
            var14 = new int[var19.length];
            if (var2) {
               boolean var15;
               Object var16;
               if (zbbf.f(var6)) {
                  var15 = true;
                  var16 = new zbbf(var22);
                  var6 = ((zahu)var16).a(var6);
               } else {
                  var15 = false;
                  var16 = new zbbe(var22);
               }

               for(var3 = 0; var3 < var19.length; ++var3) {
                  var10 = var19[var3];
                  if (var15) {
                     var19[var3] = ((zahu)var16).a(var10);
                     var14[var3] = (int)((double)var10 * var22);
                  } else if (zbbf.f(var10)) {
                     var15 = true;
                     var16 = new zbbf(var22);
                     var6 = ((zahu)var16).a(var6);
                     var19[var3] = ((zahu)var16).a(var10);

                     for(var8 = 0; var8 < var3; ++var8) {
                        var19[var8] = ((zahu)var16).a(var19[var8]);
                     }
                  } else {
                     var14[var3] = (int)((double)var10 * var22);
                  }
               }

               this.b = new zbbb((zahu)var16, new zbbh(var6, var18, var19), new zbbd(var22), new zbbh(var13, var18, var14));
            } else {
               for(var3 = 0; var3 < var19.length; ++var3) {
                  var14[var3] = (int)((double)var19[var3] * var22);
               }

               this.b = new zbbb(new zbbe(var22), new zbbh(var6, var18, var19), new zbbd(var22), new zbbh(var13, var18, var14));
            }
         }
      }
   }

   void a() {
      this.a = new zgv(this.e, this);
   }

   void b() {
      this.b = new zbba(this.e, this);
   }

   void a(double var1, boolean var3) {
      zahl var4 = this.c.b();
      int var5 = var4.a();

      for(int var6 = (int)var1; var5 > -1; var5 = var4.a()) {
         zp var7 = this.c.f(var5);
         var7.m(var6);
         Row.b(var7, var3);
      }

   }

   public int getCount() {
      return this.c.a();
   }

   public Iterator iterator() {
      return this.a.a(-1, -1, false);
   }

   public Row getRowByIndex(int index) {
      return new Row(this.e, this, this.c.f(this.c.c(index)), true);
   }

   public Row get(int rowIndex) {
      if (rowIndex < 0) {
         throw new IllegalArgumentException("Row index cannot be negative");
      } else {
         return this.a(rowIndex, false, true, true);
      }
   }

   Row a(int var1, int var2) {
      zbbj var3 = new zbbj();
      var3.a(var1, this.e);
      return new Row(this.e, this, this.c.f(this.c.a(-1, var3, var2)), false);
   }

   Row a(Row var1) {
      return new Row(this.e, this, this.c.f(this.c.a(-1, var1.a, false)), false);
   }

   Row c(int var1) {
      return this.getRowByIndex(var1);
   }

   Row b(int var1, boolean var2) {
      return this.d.a(var1, var2);
   }

   Row a(int var1, int var2, boolean var3) {
      zbbj var4 = new zbbj();
      var4.a(var1, this.e);
      var2 = this.c.a(var2, var4, -1);
      zp var5 = this.c.f(var2);
      if (var3) {
         this.e.n();
      }

      this.d.a();
      return new Row(this.e, this, var5, true);
   }

   Row a(int var1, boolean var2, boolean var3, boolean var4) {
      return this.d.a(var1, var2, var3, var4);
   }

   int d(int var1) {
      int var2 = this.c.b(var1);
      return var2 < 0 ? -1 : this.c.d(var2);
   }

   int e(int var1) {
      return this.d.c(var1);
   }

   void a(int var1, int var2, int var3, int var4) {
      zahl var5 = this.c.b(var1, var3, false);
      if (var5 != null) {
         this.e.h().getWorkbook().b();

         while(true) {
            int var7 = var5.a();
            if (var7 < 0) {
               return;
            }

            zp var6 = this.c.f(var7);
            zgy.a(this.e, var6, var2, var4);
            var5.a(var6.h(), var7);
         }
      }
   }

   public void clear() {
      this.e.r().n().b();
      this.c.e(-1);
      this.d.a();
      this.e.n();
   }

   void a(Cell var1, Row var2) {
      if (var2.j()) {
         var1.b(var2.d());
      } else {
         ColumnCollection var3 = this.e.getColumns();
         int var4 = var1.getColumn();
         int var5 = var3.e(var4);
         if (var5 > -1) {
            Column var6 = var3.getColumnByIndex(var5);
            if (var6.e()) {
               var1.b(var6.c());
            }
         } else {
            var1.b(var3.a(var1.getColumn()));
         }

      }
   }

   Cell a(int var1, int var2, boolean var3, boolean var4, boolean var5) {
      Row var6 = this.a(var1, var3, var5, true);
      return var6 == null ? null : var6.a(this, var2, var3, var4, var5);
   }

   public void removeAt(int index) {
      int var2 = this.c.c(index);
      int var3 = this.c.f(var2).a();
      this.c.c(var2, 1);
      this.e.n();
      this.d.a();
   }

   int c() {
      return this.c.a() < 1 ? 0 : this.c.a(this.c.a(-1, true));
   }

   int b(int var1, int var2) {
      int var3 = this.c.b(var1);
      if (var3 < 0) {
         int var4 = this.c.a(var2, var3);
         if (var3 == var4) {
            return -1;
         }

         var3 = -var3 - 1;
         if (var4 < 0) {
            var4 = this.c.a(-var4 - 1, true);
            if (var4 < var3) {
               return -1;
            }
         }
      }

      return this.c.d(var3);
   }

   boolean a(int var1, int[] var2) {
      var2[0] = this.c.b(var1);
      if (var2[0] < 0) {
         var2[0] = this.c.d(-var2[0] - 1);
         return false;
      } else {
         var2[0] = this.c.d(var2[0]);
         return true;
      }
   }

   void a(int var1, int var2, int var3, RowCollection var4) {
      int var5;
      if (var1 == -1) {
         var5 = this.c.b(var4.getRowByIndex(0).getIndex());
         if (var5 > -1) {
            int var6 = this.c.b(var4.getRowByIndex(var4.getCount() - 1).getIndex());
            if (var6 < 0) {
               var6 = this.c.a(-var6 - 1, true);
            }

            this.c.d(var5, var6);
         } else {
            var5 = -var5 - 1;
         }

         this.c.a(var5, var4.c, -1, var4.getCount(), false);
      } else {
         if (var1 < this.c.a()) {
            var5 = this.c.c(var1);
            this.c.d(var5, this.c.c(var2));
         } else {
            var5 = -1;
         }

         this.c.a(var5, var4.c, var4.c.c(0), var4.getCount(), false);
      }

      this.d.a();
   }

   void a(int var1, int var2, zakk var3) {
      if (this.c.a() >= 1) {
         this.e.n();
         this.d.a();
         this.b(1048575 - var2 + 1, -1, -1);
         if (this.c.a() >= 1) {
            this.e.w();
            if (this.e.b.c > 0) {
               this.a(CellArea.createCellArea(var1, 0, 1048575, 16383));
            }

            zahl var4 = this.c.b();

            while(true) {
               zp var6;
               int var7;
               do {
                  var7 = var4.a();
                  if (var7 < 0) {
                     this.c.i(var1, var2);
                     int var8 = var1 - 1;
                     if (var3 != null && var3.c) {
                        var8 = var1 + var2;
                     }

                     if (var3.a && this.getCount() != 0 && var1 > 0) {
                        Row var9 = this.a(var8, true, false, false);
                        if (var9 != null) {
                           for(int var10 = 0; var10 < var2; ++var10) {
                              Row var11 = this.a(var1 + var10, false, false, false);
                              var11.a(var9);
                           }
                        }
                     }

                     if (var3.b) {
                        this.a(var8, var1, var2);
                     }

                     return;
                  }

                  var6 = this.c.f(var7);
               } while(var6.a() <= 0);

               zahl var5 = var6.b();

               while(true) {
                  var7 = var5.a();
                  if (var7 < 0) {
                     break;
                  }

                  Cell.b(var6, var7, var1, var2, this.e.h(), true);
               }
            }
         }
      }
   }

   private void a(int var1, int var2, int var3) {
      if (var2 > 0) {
         HashMap var4 = new HashMap();
         Row var5 = this.a(var1, true, false, false);
         int var6;
         if (var5 != null) {
            for(var6 = 0; var6 < var5.a(); ++var6) {
               Cell var7 = var5.getCellByIndex(var6);
               var4.put(var7.getColumn(), var7.r());
            }
         }

         if (var4.size() != 0) {
            for(var6 = 0; var6 < var3; ++var6) {
               var5 = this.a(var2 + var6, false, false, false);
               Iterator var9 = var4.keySet().iterator();

               while(var9.hasNext()) {
                  int var8 = (Integer)var9.next();
                  var5.c(var8).b((Integer)((Integer)var4.get(var8)));
               }
            }

         }
      }
   }

   void c(int var1, int var2) {
      if (this.c.a() >= 1) {
         this.e.n();
         this.d.a();
         int var3 = var1 + var2 - 1;
         if (this.e.b.c > 0) {
            if (this.c.a() < 1) {
               this.e.b.a();
            } else {
               this.a(CellArea.createCellArea(0, var1, 1048575, var3), CellArea.createCellArea(0, var1 + var2, 1048575, 16383));
            }
         }

         zahl var4 = this.c.b();

         while(true) {
            zp var6;
            int var7;
            do {
               do {
                  var7 = var4.a();
                  if (var7 < 0) {
                     return;
                  }

                  var6 = this.c.f(var7);
               } while(var6.a() <= 0);

               zgy.a(this.e, var6, var1, var3);
            } while(var6.a() <= 0);

            zahl var5 = var6.b();

            while(true) {
               var7 = var5.a();
               if (var7 < 0) {
                  var7 = var6.b(var3 + 1);
                  if (var7 < 0) {
                     var7 = -var7 - 1;
                  }

                  var6.f(var7, -var2);
                  break;
               }

               Cell.a(var6, var7, var1, -var2, this.e.h(), true);
            }
         }
      }
   }

   void d(int var1, int var2) {
      if (this.c.a() >= 1) {
         this.e.n();
         this.d.a();
         if (this.e.b.c > 0) {
            if (this.c.a() < 1) {
               this.e.b.a();
            } else {
               this.a(CellArea.createCellArea(var1, 0, var1 + var2 - 1, 16383), CellArea.createCellArea(var1 + var2, 0, 1048575, 16383));
            }
         }

         zgy.a(this.e, this.c, var1, var1 + var2 - 1);
         zahl var6 = this.c.b();

         while(true) {
            zp var4;
            int var5;
            do {
               var5 = var6.a();
               if (var5 < 0) {
                  var5 = this.c.b(var1);
                  if (var5 < 0) {
                     var5 = -var5 - 1;
                  }

                  this.c.f(var5, -var2);
                  return;
               }

               var4 = this.c.f(var5);
            } while(var4.a() <= 0);

            zahl var3 = var4.b();

            while(true) {
               var5 = var3.a();
               if (var5 < 0) {
                  break;
               }

               Cell.b(var4, var5, var1, -var2, this.e.h(), true);
            }
         }
      }
   }

   private void b(int var1, int var2, int var3) {
      zahl var4 = this.c.b(var1, -1, false);
      if (var4 != null) {
         int var5 = var4.a();
         if (var5 >= 0) {
            int var6 = var5;
            boolean var7 = var2 > -1;

            do {
               zp var9 = this.c.f(var5);
               if (var9.a() > 0) {
                  zahl var8 = var7 ? var9.b(var2, var3, false) : var9.b();
                  if (var8 != null) {
                     while(true) {
                        var5 = var8.a();
                        if (var5 < 0) {
                           break;
                        }

                        if (var9.h(var5) != 0) {
                           throw new CellsException(7, "Aspose.Cells cannot shift nonblank cell off the worksheet.");
                        }
                     }
                  }

                  zgy.a(this.e, var9, var2, var3);
               }

               var5 = var4.a();
            } while(var5 >= 0);

            this.c.d(var6, -1);
         }
      }
   }

   private void c(int var1, int var2, int var3) {
      zahl var4 = this.c.b(var2, var3, false);
      if (var4 != null) {
         label33:
         while(true) {
            zahl var5;
            zp var6;
            int var7;
            do {
               do {
                  var7 = var4.a();
                  if (var7 < 0) {
                     return;
                  }

                  var6 = this.c.f(var7);
               } while(var6.a() <= 0);

               var5 = var6.b(var1, -1, false);
            } while(var5 == null);

            do {
               var7 = var5.a();
               if (var7 < 0) {
                  zgy.a(this.e, (zp)var6, var1, -1);
                  continue label33;
               }
            } while(var6.h(var7) == 0);

            throw new CellsException(7, "Aspose.Cells cannot shift nonblank cell off the worksheet.");
         }
      }
   }

   private void a(CellArea var1) {
      zyi[] var2 = this.e.b.b;

      for(int var4 = 0; var4 < var2.length; ++var4) {
         if (var2[var4] != null) {
            zyi var3 = var2[var4];
            CellArea var5;
            Cell var6;
            if (var3.m()) {
               var5 = var3.a().a();
               switch(var1.b(var5)) {
               case 2:
               case 3:
                  var6 = this.a(var3.e, var3.f, true, true, true);
                  if (var6 == null) {
                     this.e.b.b(var4);
                  } else {
                     var6.K();
                  }
               }
            } else if (var3.l()) {
               var5 = var3.a().a();
               switch(var1.b(var5)) {
               case 2:
               case 3:
                  var6 = this.a(var3.e, var3.f, true, true, true);
                  if (var6 != null) {
                     throw new CellsException(7, "You can not change part of an array.");
                  }

                  this.e.b.b(var4);
               }
            }
         }
      }

   }

   private void a(CellArea var1, CellArea var2) {
      zyi[] var3 = this.e.b.b;

      for(int var5 = 0; var5 < var3.length; ++var5) {
         if (var3[var5] != null) {
            zyi var4 = var3[var5];
            if (var4.m()) {
               Cell var6 = this.a(var4.e, var4.f, true, true, true);
               if (var6 == null) {
                  this.e.b.b(var5);
               } else {
                  var6.K();
               }
            } else if (var4.l()) {
               CellArea var7 = var4.a().a();
               switch(var2.b(var7)) {
               case 2:
               case 3:
                  throw new CellsException(7, "You can not change part of an array.");
               default:
                  switch(var1.b(var7)) {
                  case 2:
                  case 3:
                     throw new CellsException(7, "You can not change part of an array.");
                  }
               }
            }
         }
      }

   }

   void a(RowCollection var1, CopyOptions var2) {
      zr var3 = var1.c;
      if (var3.a() > 0) {
         zahl var4 = var3.a(-1, -1, false);
         Cells var5 = var1.e;

         label26:
         while(true) {
            int var6;
            int var7;
            Row var8;
            Row var9;
            do {
               var6 = var4.a();
               if (var6 < 0) {
                  break label26;
               }

               var8 = new Row(var5, this, var3.f(var6), false);
               var7 = var8.a();
               var9 = this.a(var8.getIndex(), var7);
               var9.a(var8, var2);
            } while(var7 <= 0);

            zahl var12 = var8.a.a(-1, -1, false);

            while(true) {
               var6 = var12.a();
               if (var6 < 0) {
                  break;
               }

               Cell var10 = new Cell(var8, var6);
               Cell var11 = var9.b(var10.getColumn());
               var11.b(var10, var2);
            }
         }
      }

      this.e.n();
      this.d.a();
   }

   void a(RowCollection var1, int var2, int var3, int var4) {
      this.e.n();
      this.d.a();
      Cells var5 = var1.e;
      if (var1 != this) {
         for(int var6 = 0; var6 < var5.getColumns().getCount(); ++var6) {
            Column var7 = var5.getColumns().getColumnByIndex(var6);
            if (var7.e()) {
               Column var8 = this.e.getColumns().c(var7.getIndex());
               if (!var7.c(var8)) {
                  for(int var9 = 0; var9 < var4; ++var9) {
                     var5.a(var2 + var9, var7.getIndex(), false);
                  }
               }
            }
         }
      }

      boolean var14 = var1 == this && var2 < var3 && var2 + var4 > var3;
      Cell var10;
      int var11;
      int var12;
      Row var15;
      Row var16;
      Cell var17;
      if (var14) {
         for(var12 = var4 - 1; var12 >= 0; --var12) {
            var15 = var1.a(var2 + var12, true, true, false);
            if (var15 != null) {
               var11 = this.e(var12 + var3);
               if (var11 < 0) {
                  var16 = this.a(var12 + var3, -var11 - 1, true);
                  var15.b();
               } else {
                  var16 = this.b(var11, false);
               }

               var16.a(var15);
               var15.b();

               for(int var13 = 0; var13 < var15.a(); ++var13) {
                  var17 = var15.getCellByIndex(var13);
                  var11 = var16.a.b(var17.getColumn());
                  if (var11 < 0) {
                     var10 = var16.a(this, var17.getColumn(), -var11 - 1, false, true);
                     var17.a();
                  } else {
                     var10 = var16.a(var11);
                  }

                  var10.a(var17, var4);
               }
            } else {
               var16 = this.a(var3 + var12, true, true, false);
               if (var16 != null) {
                  var16.c(false);
                  var16.c();
               }
            }
         }
      } else {
         var14 = var1 == this;

         for(var12 = 0; var12 < var4; ++var12) {
            var15 = var1.a(var2 + var12, true, true, false);
            if (var15 != null) {
               var11 = this.e(var12 + var3);
               if (var11 < 0) {
                  var16 = this.a(var12 + var3, -var11 - 1, true);
                  if (var14) {
                     var15.b();
                  }
               } else {
                  var16 = this.b(var11, false);
               }

               var16.a(0, var16.a());
               var16.a(var15);
               if (var14) {
                  var15.b();
               }

               for(Iterator var18 = var15.iterator(); var18.hasNext(); var10.a(var17, var4)) {
                  var17 = (Cell)var18.next();
                  var11 = var16.a.b(var17.getColumn());
                  if (var11 < 0) {
                     var10 = var16.a(this, var17.getColumn(), -var11 - 1, false, true);
                     if (var14) {
                        var17.a();
                     }
                  } else {
                     var10 = var16.a(var11);
                  }
               }
            } else {
               var16 = this.a(var3 + var12, true, true, false);
               if (var16 != null) {
                  var16.c(false);
                  var16.c();
               }
            }
         }
      }

   }

   void b(RowCollection var1, int var2, int var3, int var4) {
      this.e.n();
      this.d.a();
      zahl var5 = this.c.b();
      int var6 = var3 + var4 - 1;

      while(true) {
         int var7 = var5.a();
         if (var7 < 0) {
            if (var1.getCount() < 1) {
               return;
            } else {
               boolean var9 = this == var1;
               boolean var10 = var9 || this.e.r() == var1.e.r();
               zahl var15 = var1.c.a(-1, -1, false);

               while(true) {
                  while(true) {
                     var7 = var15.a();
                     if (var7 < 0) {
                        return;
                     }

                     Row var11 = var1.b(var7, false);
                     Row var12;
                     if (var9) {
                        var12 = var11;
                     } else {
                        var12 = null;
                     }

                     Cell var13;
                     Cell var14;
                     int var16;
                     if (var11.j()) {
                        for(var16 = 0; var16 < var4; ++var16) {
                           var13 = var11.getCellOrNull(var2 + var16);
                           if (var13 != null) {
                              if (var12 == null) {
                                 var12 = this.a(var11.getIndex(), false, true, false);
                              }

                              var7 = var12.a.b(var3 + var16);
                              if (var7 < 0) {
                                 var14 = var12.a(this, var3 + var16, -var7 - 1, false, true);
                                 if (var9) {
                                    var13.a();
                                 }
                              } else {
                                 var14 = var12.a(var7);
                              }

                              var14.a(var13);
                           } else if (var11.j()) {
                              if (var12 == null) {
                                 var12 = this.a(var11.getIndex(), false, true, false);
                              }

                              var14 = var12.a(this, var3 + var16, false, false, true);
                              if (var10) {
                                 var14.b(var11.d());
                                 if (var9) {
                                    var11.b();
                                 }
                              } else {
                                 var14.a(var11.getStyle());
                              }
                           }
                        }
                     } else {
                        int var17 = var11.a();

                        for(var16 = 0; var16 < var17; ++var16) {
                           var13 = var11.getCellByIndex(var16);
                           if (var13.getColumn() >= var2) {
                              if (var13.getColumn() >= var2 + var4) {
                                 break;
                              }

                              if (var12 == null) {
                                 var12 = this.a(var11.getIndex(), false, true, false);
                              }

                              var14 = var12.a(this, var3 + var13.getColumn() - var2, false, false, true);
                              var14.a(var13);
                              if (var9) {
                                 var11.b();
                              }
                           }
                        }
                     }
                  }
               }
            }
         }

         zp var8 = this.c.f(var7);
         zgy.a(this.e, var8, var3, var6);
      }
   }

   void e(int var1, int var2) {
      if (this.c.a() >= 1) {
         this.e.n();
         this.d.a();
         this.c(16383 - var2 + 1, -1, -1);
         if (this.e.b.c > 0) {
            if (this.c.a() < 1) {
               this.e.b.a();
            } else {
               this.a(CellArea.createCellArea(0, var1, 1048575, 16383));
            }
         }

         zahl var3 = this.c.b();
         var3.b();

         while(true) {
            zp var5;
            int var6;
            do {
               var6 = var3.a();
               if (var6 < 0) {
                  return;
               }

               var5 = this.c.f(var6);
            } while(var5.a() <= 0);

            zahl var4 = var5.b();

            while(true) {
               var6 = var4.a();
               if (var6 < 0) {
                  var5.i(var1, var2);
                  break;
               }

               Cell.a(var5, var6, var1, var2, this.e.h(), true);
            }
         }
      }
   }

   void a(CellArea var1, int var2, int var3, Worksheet var4, boolean var5) {
      if (this.c.a() >= 1) {
         boolean var6 = true;
         this.e.n();
         this.d.a();
         ColumnCollection var7 = this.e.getColumns();
         int var10;
         int var14;
         int var23;
         int var30;
         int var33;
         switch(var3) {
         case 0:
            if (this.e.b.c > 0) {
               if (this.c.a() < 1) {
                  this.e.b.a();
               } else {
                  this.e.h().getWorkbook().b();
                  this.a(CellArea.createCellArea(var1.StartRow, var1.StartColumn, 1048575, var1.EndColumn));
               }
            }

            this.e.w();
            Column[] var25 = new Column[var1.EndColumn - var1.StartColumn + 1];

            int var27;
            for(var27 = var1.StartColumn; var27 <= var1.EndColumn; ++var27) {
               var23 = var7.e(var27);
               if (var23 > -1) {
                  var25[var27 - var1.StartColumn] = var7.getColumnByIndex(var23);
               }
            }

            var27 = this.c();

            label244:
            for(var10 = var27; var10 >= 0; --var10) {
               Row var31 = this.a(var10, true, false, false);
               if (var10 < var1.StartRow) {
                  if (var31 != null && var31.a() > 0) {
                     zahl var32 = var31.a.b();

                     while(true) {
                        var33 = var32.a();
                        if (var33 < 0) {
                           break;
                        }

                        Cell.a(var31.a, var33, var1, var2, var4, true);
                     }
                  }
               } else {
                  var30 = var10 + var2;
                  Row var34 = this.a(var30, true, true, false);
                  if (var31 == null) {
                     if (var34 != null && var34.j()) {
                        for(var14 = var1.StartColumn; var14 < var1.EndColumn; ++var14) {
                           Cell var36 = var34.a(var14, false, true);
                           var36.b(15);
                           var36.e();
                        }
                     }
                  } else {
                     var14 = -1;
                     int var35 = -1;
                     int var16 = -1;
                     int var17 = -1;
                     int var19;
                     Cell var21;
                     if (var31.b(var34)) {
                        zahl var37 = var31.a.a(-1, -1, false);

                        while(true) {
                           while(true) {
                              var19 = var37.a();
                              if (var19 < 0) {
                                 if (var14 > -1) {
                                    var14 = var31.a.b(var16, var14);
                                    if (var14 < 0) {
                                       var14 = -var14 - 1;
                                    }

                                    var35 = var31.a.b(var17, var35);
                                    if (var35 < 0) {
                                       var35 = var31.a.a(-var35 - 1, true);
                                    }

                                    if (var35 >= var14) {
                                       zgy.b(this.e, var31.a, var14, var35);
                                    }
                                 }
                                 continue label244;
                              }

                              int var39 = var31.a.a(var19);
                              if (var39 >= var1.StartColumn && var39 <= var1.EndColumn) {
                                 if (var14 < 0) {
                                    var14 = var19;
                                    var16 = var39;
                                 }

                                 if (var34 == null) {
                                    var34 = this.a(var30, false, true, false);
                                 }

                                 var35 = var19;
                                 var17 = var39;
                                 var21 = new Cell(var31, var19);
                                 var21.a(var1, var2, var4, true);
                                 Cell var22 = var34.c(var21.getColumn());
                                 var22.d(var21);
                                 var31.b();
                                 var37.a(var39, var19);
                              } else {
                                 Cell.a(var31.a, var19, var1, var2, var4, true);
                              }
                           }
                        }
                     } else {
                        if (var34 == null) {
                           var34 = this.a(var30, false, true, false);
                        }

                        int var18 = -1;

                        for(var19 = var1.StartColumn; var19 <= var1.EndColumn; ++var19) {
                           var18 = var31.a.a(var19, var18);
                           Cell var20;
                           if (var18 < 0) {
                              var20 = var34.c(var19);
                              var20.b(var31.j() ? var31.d() : 15);
                           } else {
                              if (var14 < 0) {
                                 var14 = var18;
                              }

                              var35 = var18;
                              var20 = new Cell(var31, var18);
                              var21 = var34.c(var19);
                              var20.a(var1, var2, var4, true);
                              var21.d(var20);
                              var31.b();
                           }
                        }

                        if (var14 > -1) {
                           var14 = var31.a.b(var16, var14);
                           if (var14 < 0) {
                              var14 = -var14 - 1;
                           }

                           var35 = var31.a.b(var17, var35);
                           if (var35 < 0) {
                              var35 = var31.a.a(-var35 - 1, true);
                           }

                           if (var35 >= var14) {
                              zgy.b(this.e, var31.a, var14, var35);
                           }
                        }

                        zahl var38 = var31.a.b();

                        while(true) {
                           var18 = var38.a();
                           if (var18 < 0) {
                              break;
                           }

                           Cell.a(var31.a, var18, var1, var2, var4, true);
                        }
                     }
                  }
               }
            }

            return;
         case 3:
            if (this.e.b.c > 0) {
               if (this.c.a() < 1) {
                  this.e.b.a();
               } else {
                  this.e.h().getWorkbook().b();
                  this.a(CellArea.createCellArea(var1.StartRow, var1.StartColumn, var1.EndRow, 16383));
               }
            }

            this.e.w();

            for(int var8 = 0; var8 < var7.getCount(); ++var8) {
               Column var9 = var7.getColumnByIndex(var8);
               if (var9.getIndex() >= var1.StartColumn) {
                  if (var9.e() && var1.StartColumn + var2 <= var9.getIndex()) {
                     var10 = var9.getIndex() - var2;
                     var23 = var7.a(var10, var8 - var2 < 0 ? 0 : var8 - var2, var8 - 1);
                     if (var23 < 0) {
                        this.a(var1, (Column)null, var10);
                     }
                  }

                  if (var9.getIndex() + var2 <= 16383) {
                     var23 = var7.a(var9.getIndex() + var2, var8 + 1, var8 + var2 >= var7.getCount() ? var7.getCount() - 1 : var8 + var2);
                     Column var28 = null;
                     if (var23 > -1) {
                        var28 = var7.getColumnByIndex(var23);
                     }

                     if (!var9.c(var28)) {
                        this.a(var1, var9, var9.getIndex());
                     }
                  }
               }
            }

            zahl var24 = this.c.b();
            if (this.e.b.c > 0) {
               zyi[] var12 = this.e.b.b;

               for(var14 = 0; var14 < var12.length; ++var14) {
                  if (var12[var14] != null) {
                     zyi var13 = var12[var14];
                     if (var13.l()) {
                        CellArea var15 = var13.a().a();
                        if (var1.StartRow <= var15.StartRow && var1.EndRow >= var15.EndRow && var1.StartColumn <= var15.StartColumn) {
                           var15.StartColumn += var2;
                           var15.EndColumn += var2;
                           var13.a().a(var15);
                        }
                     }
                  }
               }
            }

            while(true) {
               zp var29;
               do {
                  var30 = var24.a();
                  if (var30 < 0) {
                     return;
                  }

                  var29 = this.c.f(var30);
               } while(var29.a() <= 0);

               var33 = -1;
               zahl var26 = var29.a(-1, -1, false);

               while(true) {
                  int var11 = var26.a();
                  if (var11 < 0) {
                     if (var33 > -1) {
                        var29.f(var33, var2);
                        var24.a(var29.h(), var30);
                     } else {
                        var14 = var29.h();
                        if (var14 >= var1.StartRow && var14 <= var1.EndRow) {
                           var11 = var29.b(var1.StartColumn);
                           if (var11 < 0) {
                              var11 = -var11 - 1;
                           }

                           var29.f(var11, var2);
                           var24.a(var29.h(), var30);
                        }
                     }

                     var14 = var29.a(var29.a(-1, true));
                     if (var14 > var4.getCells().e) {
                        var4.getCells().e = (short)var14;
                     }
                     break;
                  }

                  if (Cell.b(var29, var11, var1, var2, var4, true) && var33 < 0) {
                     var33 = var11;
                  }
               }
            }
         default:
            throw new CellsException(6, "Invalid shift option.");
         }
      }
   }

   int a(int var1, int var2, int var3, int var4, int var5, Worksheet var6, boolean var7) {
      this.e.n();
      this.d.a();
      int var8 = 0;
      CellArea var9 = new CellArea();
      var9.StartRow = var1;
      var9.StartColumn = var2;
      var9.EndRow = var3;
      var9.EndColumn = var4;
      int var13;
      int var15;
      boolean var16;
      int var26;
      switch(var5) {
      case 1:
         if (this.e.b.c > 0) {
            if (this.c.a() < 1) {
               this.e.b.a();
            } else {
               this.e.h().getWorkbook().b();
               this.a(CellArea.createCellArea(var1, var2, var3, var4), CellArea.createCellArea(var1, var2, var3, 16383));
            }
         }

         var8 = var4 - var2 + 1;
         ColumnCollection var20 = this.e.getColumns();
         if (var20.getCount() > 0) {
            for(int var21 = var20.getCount() - 1; var21 >= 0; --var21) {
               Column var23 = var20.getColumnByIndex(var21);
               if (var23.getIndex() < var2) {
                  break;
               }

               if (var23.e()) {
                  if (var23.getIndex() > var4) {
                     var13 = var23.getIndex() - var8;
                     var26 = var20.a(var13, 0, var21);
                     if (var26 > -1) {
                        Column var28 = var20.getColumnByIndex(var26);
                        if (!var23.c(var28)) {
                           this.a(var9, var23, var23.getIndex());
                        }
                     } else {
                        this.a(var9, var23, var23.getIndex());
                     }
                  }

                  var13 = var21 + var8 < var20.getCount() ? var21 + var8 : var20.getCount() - 1;
                  var26 = var23.getIndex() + var8;
                  if (var26 <= 16383) {
                     var15 = var20.a(var26, var21, var13);
                     if (var15 < 0) {
                        this.a(var9, (Column)null, var26);
                     } else {
                        Column var30 = var20.getColumnByIndex(var15);
                        if (!var30.e()) {
                           this.a(var9, (Column)null, var26);
                        }
                     }
                  }
               }
            }
         }

         if (this.c.a() > 0) {
            zahl var22 = this.c.b();

            while(true) {
               zp var27;
               do {
                  var15 = var22.a();
                  if (var15 < 0) {
                     return var8;
                  }

                  var27 = this.c.f(var15);
               } while(var27.a() <= 0);

               var26 = var27.h();
               var16 = var26 >= var1 && var26 <= var3;
               boolean var31 = true;
               if (var16) {
                  var31 = zgy.a(this.e, var27, var2, var4) < 1 || var27.a() > 0;
               }

               if (var31) {
                  zahl var24 = var27.b();

                  while(true) {
                     var15 = var24.a();
                     if (var15 < 0) {
                        break;
                     }

                     Cell.c(var27, var15, var9, var8, this.e.h(), true);
                  }
               }

               if (var16) {
                  var27.i(var4 + 1, -var8);
               }
            }
         }
         break;
      case 2:
         if (this.e.b.c > 0) {
            if (this.c.a() < 1) {
               this.e.b.a();
            } else {
               this.e.h().getWorkbook().b();
               this.a(CellArea.createCellArea(var1, var2, var3, var4), CellArea.createCellArea(var1, var2, var3, var4));
            }
         }

         this.e.clearContents(var1, var2, var3, var4);
         return var8;
      case 3:
      default:
         break;
      case 4:
         if (this.e.b.c > 0) {
            if (this.c.a() < 1) {
               this.e.b.a();
            } else {
               this.e.h().getWorkbook().b();
               this.a(CellArea.createCellArea(var1, var2, var3, var4), CellArea.createCellArea(var1, var2, 1048575, var4));
            }
         }

         var8 = var3 - var1 + 1;

         int var10;
         Row var11;
         int var12;
         for(var10 = this.getCount() - 1; var10 >= 0; --var10) {
            var11 = this.getRowByIndex(var10);
            if (var11.getIndex() <= var1) {
               break;
            }

            if (var11.j()) {
               Row var14;
               if (var11.getIndex() > var3) {
                  var12 = var11.getIndex() - var8;
                  var13 = this.d(var12);
                  if (var13 != -1) {
                     var14 = this.getRowByIndex(var13);
                     if (!var11.b(var14)) {
                        this.a(var9, var11, var11.getIndex());
                     }
                  } else {
                     this.a(var9, var11, var11.getIndex());
                  }
               }

               var12 = var11.getIndex() + var8;
               var13 = this.d(var12);
               if (var13 == -1) {
                  this.a(var9, (Row)null, var12);
               } else {
                  var14 = this.getRowByIndex(var13);
                  if (!var14.j()) {
                     this.a(var9, (Row)null, var12);
                  }
               }
            }
         }

         for(var10 = 0; var10 < this.getCount(); ++var10) {
            var11 = this.getRowByIndex(var10);
            var12 = this.getCount();
            Row var25 = null;
            var26 = -1;
            var15 = -1;
            var16 = false;

            for(int var17 = 0; var17 < var11.a(); ++var17) {
               Cell var18 = var11.getCellByIndex(var17);
               int var29 = var18.b(var9, var8, this.e.h(), true);
               if (var29 == 1) {
                  if (var26 == -1) {
                     var26 = var17;
                  }

                  var15 = var17;
                  if (var25 == null) {
                     var25 = this.a(var11.getIndex() - var8, false, true, false);
                     if (var12 != this.getCount()) {
                        ++var10;
                     }
                  }

                  Cell var19 = var25.a(var18.getColumn(), false, true);
                  var19.a((zfv)var18.c, 6, false);
                  var11.b();
               } else if (var29 == 2) {
                  if (var26 == -1) {
                     var26 = var17;
                  }

                  var15 = var17;
               }
            }

            if (var26 != -1) {
               var11.a(var26, var15 - var26 + 1);
            }
         }
      }

      return var8;
   }

   private void a(CellArea var1, Row var2, int var3) {
      for(int var4 = var1.StartColumn; var4 <= var1.EndColumn; ++var4) {
         Cell var5 = this.a(var3, var4, false, true, true);
         if (var5.s() == -1) {
            if (var2 == null) {
               var5.b(15);
            } else if (var2.j()) {
               var5.b(var2.d());
            }
         }
      }

   }

   private void a(CellArea var1, Column var2, int var3) {
      for(int var4 = var1.StartRow; var4 <= var1.EndRow; ++var4) {
         Cell var5 = this.a(var4, var3, false, true, true);
         if (var5.s() == -1) {
            if (var2 == null) {
               var5.b(15);
            } else if (var2.e()) {
               var5.b(var2.c());
            }
         }
      }

   }

   void a(HashMap var1, HashMap var2) {
      WorksheetCollection var3 = this.e.r();
      Cell var4 = null;

      for(int var5 = 0; var5 < this.getCount(); ++var5) {
         Row var6 = this.getRowByIndex(var5);

         for(int var7 = 0; var7 < var6.a(); ++var7) {
            var4 = var6.getCellByIndex(var7);
            if (var4.f()) {
               if (var4.D() == null) {
                  byte[] var20 = var4.v();
                  if (zyo.a(var20, -1, -1, var3, var1, var2)) {
                     var4.putValue(var4.getValue());
                  }
               } else {
                  zaz var8 = var4.D();
                  byte[] var9 = var8.d();
                  if (zyo.a(var9, -1, -1, var3, var1, var2)) {
                     CellArea var10 = var8.a();
                     int var11;
                     int var12;
                     if (var8.b()) {
                        for(var11 = var10.StartRow; var11 <= var10.EndRow; ++var11) {
                           for(var12 = var10.StartColumn; var12 <= var10.EndColumn; ++var12) {
                              var4 = this.a(var11, var12, true, false, false);
                              if (var4 != null) {
                                 var4.putValue(var4.getValue());
                              }
                           }
                        }
                     } else {
                        var11 = var4.getRow();
                        var12 = var4.getColumn();

                        for(int var13 = var10.StartRow; var13 <= var10.EndRow; ++var13) {
                           Row var14 = this.a(var13, true, false, false);
                           if (var14 != null) {
                              for(int var15 = var10.StartColumn; var15 <= var10.EndColumn; ++var15) {
                                 var4 = var14.getCellOrNull(var15);
                                 if (var4 != null && var4.f()) {
                                    var9 = var4.v();
                                    if (var3.x().a((byte)1, var9)) {
                                       byte var16 = 0;
                                       byte var17 = 0;
                                       int[] var18 = new int[]{var16};
                                       int[] var19 = new int[]{var17};
                                       var3.x().a(var9, var18, var19);
                                       int var21 = var18[0];
                                       int var22 = var19[0];
                                       if (var21 == var11 && var22 == var12) {
                                          var4.putValue(var4.getValue());
                                       }
                                    }
                                 }
                              }
                           }
                        }
                     }
                  }
               }
            }
         }
      }

   }
}
